﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AvaProvi
{
    [Serializable]
    public class clsInstalacion_CRN:clsEstado,IControlEstados
    {
        #region Propiedades
        public string EstadoInstHidraulica { get; set; }
        public string TipoInstHidraulica { get; set; }
        public string InstalacionHidraulica { get; set; }
        public string EstadoInstSanitaria { get; set; }
        public string TipoInstSanitario { get; set; }
        public string InstalacionSanitaria { get; set; }
        public string EstadoInstElectrica { get; set; }
        public string TipoInstElectrica { get; set; }
        public string InstalacionElectrica { get; set; }
        public string EstadoInstGas { get; set; }
        public string InstalacionGas { get; set; }
        public string EstadoMueblesBanio { get; set; }
        public string ObsMueblesBanio { get; set; }
        public string EstadoMueblesCocina { get; set; }
        public string ObsMueblesCocina { get; set; }
        public string EstadoHerreria { get; set; }
        public string ObsHerreria { get; set; }
        public string EstadoVidrieria { get; set; }
        public string ObsVidrieria { get; set; }
        public string EstadoCerrajeria { get; set; }
        public string ObsCerrajeria { get; set; }
        public string Fachada { get; set; }
        public string InstalacionEspecial { get; set; }
        public string EstadoTinaco { get; set; }
        public string ObsTinaco { get; set; }
        public string EstadoCalentador { get; set; }
        public string ObsCalentador { get; set; }
        public string EstadoLavadero { get; set; }
        public string ObsLavadero { get; set; }
        public string EstadoCisterna { get; set; }
        public string ObsCisterna { get; set; }
        public string EstadoFosaSeptica { get; set; }
        public string ObsFosaSeptica { get; set; }
        public clsInmueble_CRN Inmueble { get; set; }
        #endregion

        #region Constructor
        public clsInstalacion_CRN(clsInmueble_CRN objInmueble):base()
        {
            this.EstadoCalentador = string.Empty;
            this.EstadoCerrajeria = string.Empty;
            this.EstadoCisterna = string.Empty;
            this.EstadoFosaSeptica = string.Empty;
            this.EstadoHerreria = string.Empty;
            this.EstadoInstElectrica = string.Empty;
            this.EstadoInstGas = string.Empty;
            this.EstadoInstHidraulica = string.Empty;
            this.EstadoInstSanitaria = string.Empty;
            this.EstadoLavadero = string.Empty;
            this.EstadoMueblesBanio = string.Empty;
            this.EstadoMueblesCocina = string.Empty;
            this.EstadoTinaco = string.Empty;
            this.EstadoVidrieria = string.Empty;
            this.Fachada = string.Empty;
            this.Inmueble = objInmueble;
            this.InstalacionElectrica = string.Empty;
            this.InstalacionEspecial = string.Empty;
            this.InstalacionGas = string.Empty;
            this.InstalacionHidraulica = string.Empty;
            this.InstalacionSanitaria = string.Empty;
            this.ObsCalentador = string.Empty;
            this.ObsCerrajeria = string.Empty;
            this.ObsCisterna = string.Empty;
            this.ObsFosaSeptica = string.Empty;
            this.ObsHerreria = string.Empty;
            this.ObsLavadero = string.Empty;
            this.ObsMueblesBanio = string.Empty;
            this.ObsMueblesCocina = string.Empty;
            this.ObsTinaco = string.Empty;
            this.ObsVidrieria = string.Empty;
            this.TipoInstElectrica = string.Empty;
            this.TipoInstHidraulica = string.Empty;
            this.TipoInstSanitario = string.Empty;
        }
        #endregion

        #region Métodos

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return CreaInstalacion();
                else
                {
                    if (this.EsModificado)
                        return ModificaInstalacion();
                    else
                        return EliminaInstalacion();
                }
            }
            return false;
        }

        private bool EliminaInstalacion()
        {
            clsInstalacion_CD objInstalacion_CD = new clsInstalacion_CD();
            return objInstalacion_CD.EliminaInstalacion(this);
        }

        private bool ModificaInstalacion()
        {
            clsInstalacion_CD objInstalacion_CD = new clsInstalacion_CD();
            return objInstalacion_CD.ModificaInstalacion(this);
        }

        private bool CreaInstalacion()
        {
            clsInstalacion_CD objInstalacion_CD = new clsInstalacion_CD();
            if (objInstalacion_CD.CreaNuevaInstalacion(this))
            {
                this.EsModificado = true;
                return true;
            }
            return false;
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static clsInstalacion_CRN RecupreraInstalacion(clsInmueble_CRN objInmueble)
        {
            clsInstalacion_CRN objInstalacion = new clsInstalacion_CRN(objInmueble);
            clsInstalacion_CD objInstalacion_CD = new clsInstalacion_CD();
            dsInmoviliario.InstalacionesRow InstalcionRecuperada = objInstalacion_CD.RecuperaInstalacion(objInmueble.Avaluo.IdAvaluo);
            if (InstalcionRecuperada != null)
            {
                objInstalacion.EsModificado = true;
                objInstalacion.EstadoCalentador = InstalcionRecuperada.EdoCalentador;
                objInstalacion.EstadoCerrajeria = InstalcionRecuperada.EdoCerrajeria;
                objInstalacion.EstadoCisterna = InstalcionRecuperada.EdoCisterna;
                objInstalacion.EstadoFosaSeptica = InstalcionRecuperada.EdoFosaSep;
                objInstalacion.EstadoHerreria = InstalcionRecuperada.EdoHerreria;
                objInstalacion.EstadoInstElectrica = InstalcionRecuperada.EdoInstElect;
                objInstalacion.EstadoInstGas = InstalcionRecuperada.EdoInstGas;
                objInstalacion.EstadoInstHidraulica = InstalcionRecuperada.EdoInstHid;
                objInstalacion.EstadoInstSanitaria = InstalcionRecuperada.EdoInstSanit;
                objInstalacion.EstadoLavadero = InstalcionRecuperada.EdoLavadero;
                objInstalacion.EstadoMueblesBanio = InstalcionRecuperada.EdoMBanio;
                objInstalacion.EstadoMueblesCocina = InstalcionRecuperada.EdoMCocina;
                objInstalacion.EstadoTinaco = InstalcionRecuperada.EdoTinaco;
                objInstalacion.EstadoVidrieria = InstalcionRecuperada.EdoVidrieria;
                objInstalacion.Fachada = InstalcionRecuperada.Fachada;
                objInstalacion.InstalacionElectrica = InstalcionRecuperada.InstElect;
                objInstalacion.InstalacionEspecial = InstalcionRecuperada.InstEsp;
                objInstalacion.InstalacionGas = InstalcionRecuperada.InstGas;
                objInstalacion.InstalacionHidraulica = InstalcionRecuperada.InstHid;
                objInstalacion.InstalacionSanitaria = InstalcionRecuperada.InstSanit;
                objInstalacion.ObsCalentador = InstalcionRecuperada.ObsCalentador;
                objInstalacion.ObsCerrajeria = InstalcionRecuperada.ObsCerrajeria;
                objInstalacion.ObsCisterna = InstalcionRecuperada.ObsCisterna;
                objInstalacion.ObsFosaSeptica = InstalcionRecuperada.ObsFosaSep;
                objInstalacion.ObsHerreria = InstalcionRecuperada.ObsHerreria;
                objInstalacion.ObsLavadero = InstalcionRecuperada.ObsLavadero;
                objInstalacion.ObsMueblesBanio = InstalcionRecuperada.ObsMBanio;
                objInstalacion.ObsMueblesCocina = InstalcionRecuperada.ObsMCocina;
                objInstalacion.ObsTinaco = InstalcionRecuperada.ObsTinaco;
                objInstalacion.ObsVidrieria = InstalcionRecuperada.ObsVidrieria;
                objInstalacion.TipoInstElectrica = InstalcionRecuperada.TipoInstElect;
                objInstalacion.TipoInstHidraulica = InstalcionRecuperada.TipoInsthid;
                objInstalacion.TipoInstSanitario = InstalcionRecuperada.TipoInstSanit;
            }
            return objInstalacion;
        }

        #endregion
    }
}
